C++设计模式面试50问 · 构建优雅的软件架构
📚 共计 50 章节
01
设计模式概述
什么是设计模式?GoF 23种设计模式分类(创建型、结构型、行为型),为什么C++需要设计模式?
基础
GoF
02
面向对象设计原则 (SOLID)
单一职责、开闭、里氏替换、接口隔离、依赖倒置,迪米特法则。
SOLID
原则
03
单例模式 (Singleton)
饿汉式与懒汉式,线程安全,C++11 magic static,双检锁与内存屏障。
创建型
线程安全
04
工厂方法模式 (Factory Method)
简单工厂 vs 工厂方法,产品等级结构,C++多态工厂实现。
创建型
多态
05
抽象工厂模式 (Abstract Factory)
产品族概念,与工厂方法的区别,C++代码示例与适用场景。
创建型
产品族
06
建造者模式 (Builder)
复杂对象构建,链式调用,与工厂模式的区别,C++实现。
创建型
链式
07
原型模式 (Prototype)
深拷贝与浅拷贝,拷贝构造函数与clone(),原型注册表。
创建型
拷贝
08
适配器模式 (Adapter)
类适配器 vs 对象适配器,STL适配器应用,C++示例。
结构型
兼容
09
桥接模式 (Bridge)
抽象与实现分离,Pimpl惯用法,实际项目应用。
结构型
Pimpl
10
组合模式 (Composite)
树形结构,透明式与安全式,C++文件系统模拟。
结构型
树形
11
装饰器模式 (Decorator)
动态扩展功能,与继承比较,C++标准库应用。
结构型
扩展
12
外观模式 (Facade)
统一接口,子系统封装,C++日志系统设计。
结构型
封装
13
享元模式 (Flyweight)
共享对象,内部/外部状态,C++字符串常量池。
结构型
共享
14
代理模式 (Proxy)
虚代理、保护代理、远程代理,智能指针中的代理思想。
结构型
控制
15
责任链模式 (Chain of Responsibility)
请求传递,处理者链,C++日志级别处理。
行为型
链式
16
命令模式 (Command)
请求封装,撤销/重做,C++菜单命令系统。
行为型
撤销
17
解释器模式 (Interpreter)
语法解析,抽象语法树,C++简单表达式计算器。
行为型
解析
18
迭代器模式 (Iterator)
遍历聚合对象,C++ STL迭代器原理,自定义迭代器。
行为型
遍历
19
中介者模式 (Mediator)
对象间通信解耦,C++聊天室系统。
行为型
解耦
20
备忘录模式 (Memento)
状态保存与恢复,C++游戏存档功能。
行为型
存档
21
观察者模式 (Observer)
发布-订阅模型,C++事件系统,信号与槽机制。
行为型
事件
22
状态模式 (State)
状态驱动的行为变化,C++ TCP连接状态机。
行为型
状态机
23
策略模式 (Strategy)
算法族封装,运行时切换,C++排序策略选择。
行为型
算法
24
模板方法模式 (Template Method)
算法骨架,子类实现细节,C++框架设计。
行为型
骨架
25
访问者模式 (Visitor)
数据结构与操作分离,双分派,C++编译器AST处理。
行为型
双分派
26
设计模式在C++标准库中的应用
STL迭代器、算法、函数对象中的模式体现。
STL
应用
27
设计模式在Qt框架中的应用
信号槽(观察者)、QObject(组合)、布局管理(策略)。
Qt
框架
28
设计模式与C++11/14/17新特性
lambda简化策略模式,智能指针与RAII。
现代C++
lambda
29
设计模式与多线程编程
线程安全单例,生产者-消费者,线程池设计。
多线程
并发
30
设计模式与内存管理
对象池模式,引用计数,写时拷贝(COW)。
内存
对象池
31
设计模式与异常安全
异常安全单例,RAII与资源管理,异常中立原则。
异常
RAII
32
设计模式与性能优化
享元减少内存,代理延迟加载,策略避免条件分支。
性能
优化
33
设计模式与代码重构
用设计模式消除重复代码,改善可维护性,重构案例。
重构
维护
34
设计模式与测试
可测试性设计,依赖注入(策略),Mock对象(代理)。
测试
Mock
35
设计模式与架构设计
MVC架构中的模式应用,分层架构中的模式组合。
架构
MVC
36
设计模式面试题1:线程安全单例
实现一个线程安全的单例模式(多种方法)。
面试
单例
37
设计模式面试题2:动态注册工厂
实现工厂模式,支持动态注册产品。
面试
工厂
38
设计模式面试题3:异步通知观察者
实现观察者模式,支持异步通知。
面试
观察者
39
设计模式面试题4:装饰器添加日志
实现装饰器模式,对现有类添加日志功能。
面试
装饰器
40
设计模式面试题5:运行时切换策略
实现策略模式,支持运行时切换算法。
面试
策略
41
设计模式面试题6:适配第三方库
实现适配器模式,适配第三方库接口。
面试
适配器
42
设计模式面试题7:责任链处理多请求
实现责任链模式,处理多种类型请求。
面试
责任链
43
设计模式面试题8:命令模式撤销
实现命令模式,支持撤销操作。
面试
命令
44
设计模式面试题9:电梯状态机
实现状态模式,模拟电梯运行状态。
面试
状态
45
设计模式面试题10:树形菜单系统
实现组合模式,构建树形菜单系统。
面试
组合
46
综合案例1:日志系统
设计一个日志系统(外观+策略+责任链)。
综合
日志
47
综合案例2:游戏角色系统
设计游戏角色系统(状态+策略+装饰器)。
综合
游戏
48
综合案例3:网络框架
设计网络框架(观察者+代理+工厂)。
综合
网络
49
常见误区与反模式
过度设计,模式滥用,错误实现。
警示
反模式
50
总结与面试技巧
如何回答设计模式问题,项目中的模式应用经验分享。
总结
面试